# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

TEST_DIRS += [
    'gtest'
]

# Change the following line(s) to avoid bug 1081323 (clobber after changing a manifest):
# * Adjust failure errata for webgl-conf.

MOCHITEST_MANIFESTS += [
    'test/crash/mochitest.ini',
    'test/crossorigin/mochitest.ini',
    'test/mochitest.ini',
    'test/webgl-conf/generated-mochitest.ini',
    'test/webgl-mochitest/mochitest.ini',
]

MOCHITEST_CHROME_MANIFESTS += ['test/chrome/chrome.ini']

EXPORTS += [
    'nsICanvasRenderingContextInternal.h',
]

EXPORTS.mozilla.dom += [
    'CanvasGradient.h',
    'CanvasPath.h',
    'CanvasPattern.h',
    'CanvasRenderingContext2D.h',
    'CanvasRenderingContextHelper.h',
    'CanvasUtils.h',
    'ImageBitmap.h',
    'ImageBitmapRenderingContext.h',
    'ImageBitmapSource.h',
    'ImageData.h',
    'OffscreenCanvas.h',
    'TextMetrics.h',
    'WebGLVertexArrayObject.h',
]

# Canvas 2D and common sources
SOURCES += [
    'CanvasImageCache.cpp',
    'CanvasRenderingContext2D.cpp',
    'CanvasRenderingContextHelper.cpp',
    'CanvasUtils.cpp',
    'ImageBitmap.cpp',
    'ImageBitmapColorUtils.cpp',
    'ImageBitmapRenderingContext.cpp',
    'ImageBitmapUtils.cpp',
    'ImageData.cpp',
    'OffscreenCanvas.cpp',
]

SOURCES += [
    'ImageUtils.cpp',
]

# WebGL Sources
SOURCES += [
    'TexUnpackBlob.cpp',
    'WebGL1Context.cpp',
    'WebGL1ContextUniforms.cpp',
    'WebGL2Context.cpp',
    'WebGL2ContextBuffers.cpp',
    'WebGL2ContextFramebuffers.cpp',
    'WebGL2ContextMRTs.cpp',
    'WebGL2ContextPrograms.cpp',
    'WebGL2ContextQueries.cpp',
    'WebGL2ContextRenderbuffers.cpp',
    'WebGL2ContextSamplers.cpp',
    'WebGL2ContextState.cpp',
    'WebGL2ContextSync.cpp',
    'WebGL2ContextTextures.cpp',
    'WebGL2ContextTransformFeedback.cpp',
    'WebGL2ContextUniforms.cpp',
    'WebGL2ContextVAOs.cpp',
    'WebGL2ContextVertices.cpp',
    'WebGLActiveInfo.cpp',
    'WebGLBuffer.cpp',
    'WebGLContext.cpp',
    'WebGLContextBuffers.cpp',
    'WebGLContextDraw.cpp',
    'WebGLContextExtensions.cpp',
    'WebGLContextFramebufferOperations.cpp',
    'WebGLContextGL.cpp',
    'WebGLContextLossHandler.cpp',
    'WebGLContextState.cpp',
    'WebGLContextTextures.cpp',
    'WebGLContextUnchecked.cpp',
    'WebGLContextUtils.cpp',
    'WebGLContextValidate.cpp',
    'WebGLContextVertexArray.cpp',
    'WebGLContextVertices.cpp',
    'WebGLElementArrayCache.cpp',
    'WebGLExtensionBase.cpp',
    'WebGLExtensionBlendMinMax.cpp',
    'WebGLExtensionColorBufferFloat.cpp',
    'WebGLExtensionColorBufferHalfFloat.cpp',
    'WebGLExtensionCompressedTextureATC.cpp',
    'WebGLExtensionCompressedTextureES3.cpp',
    'WebGLExtensionCompressedTextureETC1.cpp',
    'WebGLExtensionCompressedTexturePVRTC.cpp',
    'WebGLExtensionCompressedTextureS3TC.cpp',
    'WebGLExtensionDebugGet.cpp',
    'WebGLExtensionDebugRendererInfo.cpp',
    'WebGLExtensionDebugShaders.cpp',
    'WebGLExtensionDepthTexture.cpp',
    'WebGLExtensionDisjointTimerQuery.cpp',
    'WebGLExtensionDrawBuffers.cpp',
    'WebGLExtensionElementIndexUint.cpp',
    'WebGLExtensionEXTColorBufferFloat.cpp',
    'WebGLExtensionFragDepth.cpp',
    'WebGLExtensionInstancedArrays.cpp',
    'WebGLExtensionLoseContext.cpp',
    'WebGLExtensionShaderTextureLod.cpp',
    'WebGLExtensionSRGB.cpp',
    'WebGLExtensionStandardDerivatives.cpp',
    'WebGLExtensionTextureFilterAnisotropic.cpp',
    'WebGLExtensionTextureFloat.cpp',
    'WebGLExtensionTextureFloatLinear.cpp',
    'WebGLExtensionTextureHalfFloat.cpp',
    'WebGLExtensionTextureHalfFloatLinear.cpp',
    'WebGLExtensionVertexArray.cpp',
    'WebGLFormats.cpp',
    'WebGLFramebuffer.cpp',
    'WebGLFramebufferAttachable.cpp',
    'WebGLMemoryTracker.cpp',
    'WebGLObjectModel.cpp',
    'WebGLProgram.cpp',
    'WebGLQuery.cpp',
    'WebGLRenderbuffer.cpp',
    'WebGLSampler.cpp',
    'WebGLShader.cpp',
    'WebGLShaderPrecisionFormat.cpp',
    'WebGLShaderValidator.cpp',
    'WebGLSync.cpp',
    'WebGLTexelConversions.cpp',
    'WebGLTexture.cpp',
    'WebGLTextureUpload.cpp',
    'WebGLTransformFeedback.cpp',
    'WebGLUniformLocation.cpp',
    'WebGLValidateStrings.cpp',
    'WebGLVertexArray.cpp',
    'WebGLVertexArrayFake.cpp',
    'WebGLVertexArrayGL.cpp',
    'WebGLVertexArrayObject.cpp',
    'WebGLVertexAttribData.cpp',
]

SOURCES += [
    'MurmurHash3.cpp',
]

# Suppress warnings from third-party code.
if CONFIG['CLANG_CXX'] or CONFIG['GNU_CXX']:
    SOURCES['MurmurHash3.cpp'].flags += ['-Wno-implicit-fallthrough']

LOCAL_INCLUDES += [
    '/js/xpconnect/wrappers',
]

include('/ipc/chromium/chromium-config.mozbuild')

FINAL_LIBRARY = 'xul'
LOCAL_INCLUDES += [
    '../workers',
    '/dom/base',
    '/dom/html',
    '/dom/svg',
    '/dom/workers',
    '/dom/xul',
    '/gfx/gl',
    '/image',
    '/js/xpconnect/src',
    '/layout/generic',
    '/layout/style',
    '/layout/xul',
    '/media/libyuv/include',
]

CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
CXXFLAGS += CONFIG['TK_CFLAGS']

LOCAL_INCLUDES += CONFIG['SKIA_INCLUDES']

if CONFIG['GNU_CXX']:
    CXXFLAGS += ['-Wno-error=shadow']

if CONFIG['_MSC_VER']:
    # This is intended as a temporary workaround to unblock compilation
    # on VS2015 in warnings as errors mode.
    CXXFLAGS += ['-wd4312']
